from django.db import models
import datetime

# Create your models here.
class TipoDocumentoIdentificacion(models.Model):
    nombre = models.CharField(max_length=50)

    def __str__(self):
        return self.nombre

    class Meta:
        ordering = ['nombre']

class Tercero(models.Model):
    numero_identificacion = models.CharField(max_length=20)
    primer_nombre = models.CharField(max_length=100, null=True)
    segundo_nombre = models.CharField(max_length=100, null=True)
    primer_apellido = models.CharField(max_length=100, null=True)
    segundo_apellido = models.CharField(max_length=100, null=True)
    email = models.CharField(max_length=200)
    fecha_registro = models.DateTimeField(auto_now_add=True, editable=False)
    tipo_documento = models.ForeignKey(TipoDocumentoIdentificacion)

    def __str__(self):
        nombre_completo = self.primer_nombre
        if self.segundo_nombre.__len__() != 0:
            nombre_completo += " " + self.segundo_nombre

        nombre_completo += " " + self.segundo_nombre

        if self.segundo_apellido.__len__() != 0:
            nombre_completo += " " + self.segundo_apellido

        return nombre_completo

    class Meta:
        ordering = ['primer_apellido']
        unique_together = ('tipo_documento', 'numero_identificacion')


class Usuario(Tercero):
    login = models.CharField(max_length=200, unique=True)
    clave = models.CharField(max_length=32)


class Estudiante(Tercero):
    codigo = models.CharField(max_length=20, unique=True)

class EstadoTicket(models.Model):
    codigo = models.CharField(max_length=2)
    nombre = models.CharField(max_length=20)

    def __str__(self):
        return self.codigo + " - " + self.nombre

    class Meta:
        ordering = ['codigo']

class Ticket(models.Model):
    numero = models.CharField(max_length=10)
    descripcion = models.CharField(max_length=2000)
    fecha_registro = models.DateTimeField(auto_now_add=True, editable=False)
    fecha_reporte = models.DateField(auto_now=True)
    responsable = models.ForeignKey(Usuario)
    reportado = models.ForeignKey(Estudiante)

    def __str__(self):
        return self.numero

    class Meta:
        ordering = ['numero']